[네트워크] STP

IT 엔지니어를 위한 네트워크 입문

Posted by ChaelinJ on June 21, 2021

4.3 STP

네트워크를 스위치 하나로 구성했을 때, 그 스위치에 장애가 발생하면 전체 네트워크에 장애가 발생합니다.

이처럼 하나의 구성 요소에서 고장이 발생했을 때 전체 시스템의 작동이 멈추는 요소를 SPoF(Single Poing of Failure, 단일 장애점)이라고 합니다.

네트워크에선 이런 경우를 피하기 위해 이중화, 다중화된 네트워크를 디자인하고 구성합니다.

이런 경우를 피하기 위해 두 대의 스위치로 디자인하지만 두 대 이상의 스위치로 디자인하면 패킷이 네트워크를 따라 계속 전송되므로 네트워크를 마비시킬 수 있습니다.

이런 상황을 Loop라 합니다.

4.3.1 루프란?

루프란 네트워크에 연결된 모양이 고리처럼 되돌아오는 형태로 구성된 상황을 말합니다.

루프 상황이 발생했을 때, 네트워크가 마비되고 통신이 안 되는 상황이 발생합니다.

루프로 인한 문제가 발생했다면 대부분 브로드캐스트 스톰으로 인한 문제입니다.


4.3.1.1 브로드캐스트 스톰

루프 구조로 네트워크가 연결된 상태에서 단말이 브로드캐스트를 발생시키면 스위치는 이 패킷을 발신지 포트를 제외한 모든 포트로 플러딩합니다.

플러딩된 패킷은 다른 스위치로도 보내지고 이 패킷을 받은 스위치 또한 플러딩합니다.

플러딩: 신되는 링크 만을 제외시킨 채, 패킷을 나머지 모든 링크에로 단순하게 복사 전송하는, 일종의 무제어 포트 배정 [정보통신기술용어해설 참조]

루프 구조 상태에서는 이 패킷이 계속 돌아가는데 이것을 브로드캐스트 스톰이라 합니다.

3계층 헤더에는 TTL(Time to Live)라는 패킷 수명을 가지고 있지만 스위치가 확인하는 2계층엔 이런 라이프타임 메커니즘이 없어 루프가 발생하면 패킷 하나가 전체 네트워크 대역폭을 차지할 수 있습니다.

이런 브로드캐스트 스톰은 네트워크 전체 대역폭을 차지하고 네트워크에 연결된 모든 단말이 브로드캐스트를 처리하기 위해 시스템 리소스를 사용하면서 스위치와 네트워크에 연결된 단말 간 통신이 거의 불가능한 상태가 됩니다.

다음은 브로드캐스트 스톰이 발생하면 나타나는 증상입니다.

  1. 네트워크에 접속된 단말의 속도가 느려집니다.
    • 많은 브로드캐스트를 처리해야 하므로 CPU 사용률이 높아집니다.
  2. 네트워크 접속 속도가 느려집니다.
    • 거의 통신 불가능 수준이 됩니다.
  3. 네트워크에 설치된 스위치에 모든 LED들이 동시에 빠른 속도로 깜빡입니다.

루프가 만들어진 상황에서는 케이블을 제거하기 전까지 네트워크가 마비된 것 같은 상태가 지속됩니다.


4.3.1.2 스위치 MAC 러닝 중복 문제

루프 구조 상태에선 브로드캐스트뿐만 아니라 유니캐스트도 문제를 일으킵니다.

한 패킷이 루프를 돌아 같은 도착지에 중복 도착하는 문제가 발생할 수 있으며 중간에 있는 스위치에서도 MAC 러닝 문제가 발생합니다.

스위치는 출발지 MAC 주소를 학습하는데 직접 전달되는 패킷과 스위치를 돌아 들어간 패킷 간의 포트가 달라 MAC 주소를 정상적으로 학습할 수 없습니다.

스위치 MAC 주소 테이블에서는 하나의 MAC 주소에 대해 하나의 포트만 학습할 수 있으므로 동일한 MAC 주소가 여러 포트에서 학습되면 MAC 테이블이 반복 갱신되어 정상적으로 동작하지 않습니다.

이러한 현상을 MAC 어드레스 플래핑(MAC Address Flapping)이라고 부릅니다.

스위치 MAC 주소 중복 문제

위처럼 AA에서 출발한 한 패킷이 C에서 A와 B로 전달되고, A에서 다시 B로 전달합니다. 결과적으로 스위치 B는 동일한 출발지 AA를 가진 패킷이 스위치 C를 통해 Eth 1로, 스위치 A를 통해 Eth 2로 전달됩니다.

스위치 B에선 Eth 1포트와 Eth 2 포트에서 AA 주소를 반복적으로 습득해 MAC 어드레스 플래핑 현상이 발생합니다.

이런 현상이 발생하면 스위치에서 학습된 주소의 포트가 계속 변경되므로 스위치가 정상적으로 동작하지 못하고 패킷을 플러딩합니다.

이런 현상을 예방하기 위해 스위치 설정에 따라 <ul>경고 메시지를 관리자에게</ul> 알려주거나 수시로 일어나는 <ul>플래핑 현상을 학습하지 않도록 자동 조치</ul>합니다.

앞의 문제들의 발생으로 네트워크가 정상적으로 동작하지 못하기 때문에 루프가 생기지 않도록 미리 네트워크에 조치를 해야 합니다.

루프 구성 중 하나의 포트만 사용하지 못하도록 셧다운되어 있어도 루프를 예방할 수 있습니다. 하지만 네트워크의 SPoF를 예방하기 위해 두 개 이상의 스위치로 디자인했는데 다시 수동으로 루프를 찾아 강제로 사용하지 못하게 하는 방법은 바람직하지 않습니다.

  • 네트워크에서 루프를 찾아내는 것이 힘듭니다.
  • 찾아내 강제로 포트를 사용하지 못하게 하더라도 네트워크에 장애가 발생하면 해당 포트를 수동으로 다시 사용하도록 해야 합니다.

사용자가 이렇게 적극적으로 개입하는 방법으로는 네트워크 장애에 적절히 대응할 수 없습니다.

이런 이유로 루프를 자동 감지해 포트를 차단하고 장애 때문에 우회로가 없을 때 차단된 포트를 스위치를 스스로 다시 풀어주는 스패닝 트리 포로토콜이 개발되었습니다.

스패닝 트리 프로토콜은 장애가 발생하면 차단된 포트를 자동으로 복구합니다.


4.3.2 STP란?

스패닝 트리 프로토콜(Spanning Tree Protocol)은 루프를 확인하고 적절히 포트를 사용하지 못하게 만들어 루프를 예방하는 메커니즘입니다.

스패닝 트리 프로토콜을 이용해 루프를 예방하려면 전체 스위치가 어떻게 연결되는지 알아야 합니다.

전체적인 스위치 연결 상황을 파악하려면 스위치 간에 정보를 전달하는 방법이 필요합니다.

이를 위해 스위치는 BPDU(Bridge Protocol Data Unit)라는 포로토콜을 통해 스위치 간에 정보를 전달하고 이렇게 수집된 정보를 이용해 전체 네트워크 트리를 만들어 루프 구간을 확인합니다.

BPUD에는 스위치가 갖고 있는 ID와 같은 고유값이 들어가고 이런 정보들이 스위치 간에 서로 교환되면서 루프 파악이 가능해집니다. 이렇게 확인된 루프 지점을 데이터 트래픽이 통과하지 못하도록 차단해 루프를 예방합니다.


4.3.2.1 스위치 포트의 상태 및 변경 과정

STP가 동작 중인 스위치에서는 루프를 막기 위해 스위치 포트에 신규 스위치가 연결되면 바로 트래픽이 흐르지 않도록 차단합니다. 그 후 해당 포트로 트래픽이 흘러도 되는지 확인하기 위해 BPDU를 기다려 학습하고 구조를 파악한 후 트래픽을 흘리거나 루프 구조인 경우, 차단 상태를 유지합니다.

차단 상태에서 트래픽이 흐를 때까지 스위치 포트의 상태는 다음 네 가지로 구분할 수 있습니다.

Blocking
  • 패킷 데이터를 차단한 상태로 상대방이 보낸 BPDU를 기다립니다.
  • 총 20 초인 Max Age 기간 동안 상대방 스위치에서 BPDU를 받지 못했거나 후순위 BPDU를 받았을 때 포트는 리스닝 상태로 변경됩니다.
    • BPDU 기본 교환 주기는 2초이고 10번의 BPDU를 기다립니다.
Listening
  • 해당 포트가 전송 상태로 변경이 되는 것을 결정하고 준비하는 단계입니다.
  • 이 상태부터는 자신의 BPDU 정보를 상대방에게 전송하기 시작합니다.
  • 총 15초 동안 대기합니다.
Learning
  • 러닝 상태는 이미 해당 포트를 포워딩 하기로 결정하고 실제 패킷 포워딩이 일어날 때 스위치가 곧바로 동작하도록 MAC 주소를 러닝하는 단계입니다.
  • 총 15초 동안 대기합니다.
Forwarding
  • 패킷을 포워딩하는 단계입니다. 정상적인 통신이 가능합니다.

위와 같은 단계를 거치기 때문에 스위치에 신규 장비를 붙이면 통신하는데 50여 초 가량 소요됩니다.

스위치는 루프를 예방하기 위해 매우 방어적으로 동작하는데 새로 연결된 단말이 스위치일 가능성이 있어 BPDU를 일정 시간 이상 기다려 스위치 여부를 파악합니다.

이로 인해 스위치를 연결하는 경우 뿐만 아니라 일반 단말을 연결하더라도 동일한 시간이 필요합니다.

기본 STP 상태 변화

링크가 자신의 인터페이스인 경우, 토폴로지가 변했음을 직접 감지할 수 있어 Max Age를 거지치 않고 리스닝부터 STP 상태 변화가 즉시 이루어 지므로 30초 만에 절체됩니다.

STP가 활성화된 경우, 스위치 포트는 곧바로 포워딩 상태가 되지 않습니다.

이로 인해 다양한 장애가 발생하거나 스위치 이상으로 생각되는 경우가 많습니다.

특히 부팅 시간이 매우 빠른 OS가 DHCP 네트워크에 접속할 때 부팅 단계에서 IP를 요청하지만 스위치 포트가 포워딩 상태가 되지 않아 IP를 정상적으로 할당받지 못하는 경우가 많습니다.


[IT 엔지니어를 위한 네트워크 입문] 도서를 참조해 공부한 내용입니다.

감사합니다.

Photographs by Chaelin, Unsplash.